package cn.baage.campus.service;

import cn.baage.campus.model.po.Posting;
import cn.baage.campus.model.vo.PostingAddReqVO;
import cn.baage.campus.model.vo.PostingDetailResVO;
import cn.baage.campus.model.vo.PostingQueryReqVO;
import cn.baage.campus.model.vo.PostingResVO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * @Description: 帖子Service
 * @Author: 八阿哥
 * @url: baage.cn
 * @Version: 1.0
 **/
public interface PostingService extends IService<Posting> {


    /**
     * 新增帖子
     *
     * @param postingAddReqVO 帖子内容
     */
    void addPosting(PostingAddReqVO postingAddReqVO);

    /**
     * 查询帖子列表
     *
     * @param postingQueryReqVO 查询条件
     * @return 帖子列表
     */
    List<PostingResVO> listPosting(PostingQueryReqVO postingQueryReqVO);

    /**
     * 查询热点帖子
     *
     * @return 热点帖子
     */
    List<PostingResVO> listHotPosting();


    /**
     * 获取热点帖子（缓存）
     *
     * @return 热点帖子(缓存)
     */
    List<PostingResVO> listHosPostingCache();


    /**
     * 获取帖子详情
     *
     * @return 帖子详情
     */
    PostingDetailResVO getPostingDetail(String postingId);

    /**
     * 处理点赞
     *
     * @param postingId 帖子ID
     * @param likeType 点赞类型：0 取消点赞，1 点赞
     */
    void likePosting(String postingId, Integer likeType);


    /**
     * 更新热点分数
     *
     * @param postingId 帖子ID
     * @param score 热点分数
     */
    void updateHotScore(String postingId, Double score);


    /**
     * 更新喜欢数
     *
     * @param postingId 帖子ID
     * @param num 喜欢数
     */
    void updateLikeNum(String postingId, Integer num);


    /**
     * 更新阅读数
     *
     * @param postingId 帖子ID
     * @param num 阅读数
     */
    void updatePostingReadNum(String postingId, Integer num);

}
